package rabbitmq

import (
	"context"
	"gitee.com/injoyai/goutil/string/logs"
	amqp "github.com/rabbitmq/amqp091-go"
)

var Log = logs.New("RabbitMQ")

type Config struct {
	Address    string
	Name       string //队列名称
	Durable    bool   //是否持久化，true为是。持久化会把队列存盘，服务器重启后，不会丢失队列以及队列内的信息。（注：1、不丢失是相对的，如果宕机时有消息没来得及存盘，还是会丢失的。2、存盘影响性能。）
	AutoDelete bool   //是否自动删除，true为是。至少有一个消费者连接到队列时才可以触发。当所有消费者都断开时，队列会自动删除。
	Exclusive  bool   //是否设置排他，true为是。如果设置为排他，则队列仅对首次声明他的连接可见，并在连接断开时自动删除。（注意，这里说的是连接不是信道，相同连接不同信道是可见的）。
	Nowait     bool   //是否非阻塞，true表示是。阻塞：表示创建交换器的请求发送后，阻塞等待RMQ Server返回信息。非阻塞：不会阻塞等待RMQ Server的返回信息，而RMQ Server也不会返回信息。（不推荐使用）
	Debug      bool   //调试模式
}

type Entity struct {
	cfg     *Config
	conn    *amqp.Connection
	queue   amqp.Queue
	channel *amqp.Channel
	ctx     context.Context
}
